{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = ''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from transformers import T5Tokenizer, T5ForConditionalGeneration\n",
    "\n",
    "tokenizer = T5Tokenizer.from_pretrained('mesolitica/t5-small-standard-bahasa-cased')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['finetune-t5-small-standard-bahasa-cased/checkpoint-368000',\n",
       " 'finetune-t5-small-standard-bahasa-cased/checkpoint-370000']"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from glob import glob\n",
    "\n",
    "checkpoints = sorted(glob('finetune-t5-small-standard-bahasa-cased/checkpoint-*'))\n",
    "checkpoints"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = T5ForConditionalGeneration.from_pretrained(checkpoints[-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "isi_penting = ['Dr M perlu dikekalkan sebagai perdana menteri',\n",
    "              'Muhyiddin perlulah menolong Dr M',\n",
    "              'rakyat perlu menolong Muhyiddin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_repeat_fullstop(string):\n",
    "    return ' '.join([k.strip() for k in string.split('.') if len(k.strip())])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'karangan: 1. Dr M perlu dikekalkan sebagai perdana menteri. 2. Muhyiddin perlulah menolong Dr M. 3. rakyat perlu menolong Muhyiddin.'"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "points = [\n",
    "    f'{no + 1}. {remove_repeat_fullstop(string)}.'\n",
    "    for no, string in enumerate(isi_penting)\n",
    "]\n",
    "points = ' '.join(points)\n",
    "points = f'karangan: {points}'\n",
    "points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Dalam era pasca-2020, rakyat perlu menolong Muhyiddin. Dalam konteks ini, rakyat perlu membantu Muhyiddin. Dalam konteks ini, rakyat perlu menolong Muhyiddin. Dalam konteks ini, rakyat perlu membantu Muhyiddin. Muhyiddin perlulah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M juga perlu dikekalkan sebagai perdana menteri. Dr M perlu dikekalkan sebagai perdana menteri. Dr M haruslah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M perlulah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M perlulah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M haruslah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M perlulah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M perlulah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah menolong Dr M. Mahathir untuk menjadi perdana menteri. Dr M mestilah'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids, do_sample=True,\n",
    "    max_length=256,\n",
    "    top_k=0,\n",
    "    temperature=0.5)\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Dalam usaha menjadikan negara ini sebuah negara demokrasi, rakyat perlu menolong Muhyiddin. Hal ini kerana negara kini telah mengamalkan demokrasi yang progresif dengan mengambil kira pandangan dan cadangan daripada pelbagai pihak. Hal ini secara langsung dapat membantu menyelesaikan masalah dan masalah negara. Perkara ini dapat dilihat daripada sudut positif dalam memastikan rakyat sentiasa mempunyai dasar kerajaan yang seimbang. Maka, kerajaan perlulah meneruskan inisiatif-inisiatif yang dilaksanakan seperti mengadakan perbincangan dan berbincang antara rakyat dengan kerajaan. Sebagaimana yang kita boleh bincangkan, Muhyiddin perlulah menolong Dr Mahathir Mohamad yang dikatakan sebagai PM selepas mendapat tahu dari kalangan rakyat bahawa kerajaan yang bersih dan berintegriti tidak akan membantu rakyat. Perumpamaan ini jelas menunjukkan rakyat sedang menghadapi masalah yang berbangkit dari segi pendidikan. Jika dilihat pada sudut positif, Dr Mahathir yang pernah menjawat jawatan Perdana Menteri ke-10 sebelum ini, tidak berjaya mengubah landskap politik negara sejak dari zaman ke zaman. Namun begitu, keadaan ini tidak menjadi, sebaliknya. Sebagai perdana menteri, Muhyiddin perlulah menolong Dr M dan kerajaan yang bersih, berintegriti dan berintegriti. Malah, beliau sendiri perlulah menolong Dr M serta kerajaan yang bersih. Maka, Muhyiddin perlulah menolong Dr M dan kerajaan yang bersih. Selain daripada kerajaan, Muhyiddin juga perlulah bertindak di luar kebiasaan dalam menyelesaikan masalah. Hal'"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids, do_sample=True,\n",
    "    max_length=256,\n",
    "    top_k=50, \n",
    "    top_p=0.95)\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'karangan: 1. Neelofa tetap dengan keputusan untuk berkahwin akhir tahun ini. 2. Long Tiger sanggup membantu Neelofa. 3. Tiba-tiba Long Tiger bergaduh dengan Husein.'"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isi_penting = ['Neelofa tetap dengan keputusan untuk berkahwin akhir tahun ini',\n",
    "              'Long Tiger sanggup membantu Neelofa',\n",
    "              'Tiba-tiba Long Tiger bergaduh dengan Husein']\n",
    "\n",
    "points = [\n",
    "    f'{no + 1}. {remove_repeat_fullstop(string)}.'\n",
    "    for no, string in enumerate(isi_penting)\n",
    "]\n",
    "points = ' '.join(points)\n",
    "points = f'karangan: {points}'\n",
    "points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Dalam erti kata lain, bukankah bersaudara? Itu alasan berjauhan dalam kontrak dan menerima hutang? Sudah menjadi tanggungjawab mana-mana individu berfikir untuk bertunang. Namun, pemain bola sepak tempatan dia membuat pengesahan tentang status perkahwinan dihormati dan dikenang sebagai kaum lelaki dan wanita. Namun, persoalan tersebut seharusnya menjadi seribu satu peribahasa \"bagai menatang minyak di mata para dunia yang terdampar di celah-celah hidup tanpa cacian. Tidak dinafikan itu semua peribahasa dalam hidup di nusa. Namun, polemik disatukan selemik yang melanda dunia tidak harus dipandang enteng oleh mana-mana individu. Disebabkan itu, kita perlu memahami permasalahan yang cuba diselesaikan oleh salah seorang individu yang dinyatakan dalam satu kiblat perbincangan di Komtar. Pertemuan itu tidak berkesudahan. Bahkan, hubungan yang buruk antara kedua-dua pelaku itu harus dibendung. Sudah menjadi tanggungjawab kita untuk sebarkan azam dan hikmah dan menerima keputusan yang tuntas. Sememangnya, wujud di lokasi dan masa yang tepat bagi kita dalam mekanisma perkahwinan yang bermula selepas pernikahan. Bagaimanakah langkah mengatasi masalah kepincangan ini? Persoalan yang membelenggu ini penting sekali. Antara tawaran yang dikemukakan penghantar makanan, Neelofa yang menganggap pembayaran'"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids,\n",
    "                        do_sample=True, \n",
    "    max_length=256, \n",
    "    top_k=0)\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Hapus kanser di Malaysia. Mungkin kita belum sedar diri bahawa penyakit ini bukan punca penyakit yang dihidapi tetapi penyakit yang menyebabkan banyak kematian. Kita perlu mengetahui apakah punca yang menyebabkan kanser, kematian, apa punca penyakit dan sebagainya. Persoalannya, apakah punca kepada penyakit ini? Sebelum menjadi masyarakat kita, kita perlu mengambil contoh cara lain. Masalah utama ialah masalah ini dapat diselesaikan segera. Hal ini disebabkan, seseorang itu mempunyai niat sendiri untuk menipu orang lain. Ada dalam kalangan kita yang sanggup mengambil gambar bersama seseorang si mati. Ada juga yang sanggup mengambil gambar dengan niat untuk menipu diri mereka sendiri dengan sengaja. Namun, apa puncanya? Bagaimanakah punca sebenar penyakit ini? Punca utama masalah ini disebabkan masalah sama berlaku di luar negara. Sejak kecil lagi, masalah ini semakin mencatit. Malah, ramai juga yang sanggup mengambil gambar bersama seseorang yang tidak bersalah. Selain mereka yang didakwa bersubahat dengan seorang lelaki atau wanita yang telah berkahwin bersama pasangannya. Ramai juga yang sanggup mengambil gambar dan video bersama teman lelakinya yang didakwanya bersubahat dengannya. Begitu juga kes yang timbul di dalam negara pula. Ini menyebabkan mereka sanggup tangkap gambar bersama si mati kerana menganggap dia ini orang yang tidak bersalah. Justeru, kita perlu mengkaji punca-punca yang berlaku. Persoalan yang saya ingin'"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids, do_sample=True,\n",
    "    max_length=256,\n",
    "    top_k=50, \n",
    "    top_p=0.95)\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'karangan: 1. Dapat memupuk semangat kerjasama. 2. Dapat mengeratkan hubungan silaturahim. 3. Kebersihan kawasan persekitaran terpelihara. 4. Terhindar daripada wabak penyakit seperti Denggi. 5. Mengisi masa lapang. 6. Menerapkan nilai-nilai murni dalam kehidupan.'"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isi_penting = ['Dapat memupuk semangat kerjasama',\n",
    "               'Dapat mengeratkan hubungan silaturahim.',\n",
    "               'Kebersihan kawasan persekitaran terpelihara.',\n",
    "               'Terhindar daripada wabak penyakit seperti Denggi',\n",
    "               'Mengisi masa lapang',\n",
    "               'Menerapkan nilai-nilai murni dalam kehidupan']\n",
    "\n",
    "points = [\n",
    "    f'{no + 1}. {remove_repeat_fullstop(string)}.'\n",
    "    for no, string in enumerate(isi_penting)\n",
    "]\n",
    "points = ' '.join(points)\n",
    "points = f'karangan: {points}'\n",
    "points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Dalam meniti arus modenisasi, manusia telah berubah menjadi robot menjadi robot dan robot seperti robot. Di zaman globalisasi ini, manusia akan menjadi robot yang menjadi alat dan robot menjadi robot. Namun, perkara ini tidak memberi kesan kepada kehidupan yang hidup hari ini. Namun, kita harus mengetahui bahawa manusia telah mengubah sikap yang saling membantu dan saling membantu. Misalnya, pelajar sekolah menengah telah menjadi mangsa wabak Covid-19 yang melanda negara ini. Mereka telah menumpaskan diri mereka dengan robot tersebut dan menjadi orang yang berguna dalam kehidupan. Mereka juga dapat membantu untuk melakukan kebaikan yang sama seperti melakukan perkara yang lain pada masa hadapan. Apabila mereka bertelagah sesama sendiri, maka mereka akan membina pasukan yang berguna di masa hadapan. Sebagai contoh, guru dan ahli masyarakat boleh membantu guru yang mempunyai masalah kebersihan di rumah dengan membawa barangan makanan mereka di rumah. Hal ini demikian kerana, peralatan dapur yang digunakan untuk memasak dan memasak adalah lebih selesa digunakan berbanding peralatan dapur lain. Selain itu, guru yang terlatih dan mesra alam juga mampu memberi inspirasi kepada pelajar di sekolah dengan cara-cara yang mudah dan berkesan. Hal ini dikatakan demikian kerana apabila mereka menggunakan peralatan dapur di dalam bilik, ia akan memberikan sedikit motivasi untuk mereka bergiat dalam aktiviti harian. Akibatnya, mereka lebih tertumpu kepada aktiviti seharian dan seterusnya dapat'"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids,\n",
    "                        do_sample=True, \n",
    "    max_length=256, \n",
    "    top_k=50, \n",
    "    top_p=0.95, )\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'karangan: 1. Rajin berusaha – tidak mudah putus asa. 2. Menghormati orang yang lebih tua – mendapat keberkatan. 3. Melibatkan diri secara aktif dalam bidang kokurikulum. 4. Memberi tumpuan ketika guru mengajar. 5. Berdisiplin – menepati jadual yang disediakan. 6. Bercita-cita tinggi – mempunyai keazaman yang tinggi untuk berjaya.'"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "isi_penting = ['Rajin berusaha – tidak mudah putus asa',\n",
    "               'Menghormati orang yang lebih tua – mendapat keberkatan',\n",
    "               'Melibatkan diri secara aktif dalam bidang kokurikulum',\n",
    "               'Memberi tumpuan ketika guru mengajar.',\n",
    "               'Berdisiplin – menepati jadual yang disediakan.',\n",
    "               'Bercita-cita tinggi – mempunyai keazaman yang tinggi untuk berjaya']\n",
    "\n",
    "points = [\n",
    "    f'{no + 1}. {remove_repeat_fullstop(string)}.'\n",
    "    for no, string in enumerate(isi_penting)\n",
    "]\n",
    "points = ' '.join(points)\n",
    "points = f'karangan: {points}'\n",
    "points"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Bersainglah dalam kancah peperangan ini, dunia akan lenyapnya dek kejahilan dan ketakwaan anak-anak kita yang berusia setahun jagung ini. Kita harus sedar bahawa masyarakat yang kita sayangi akan mengharungi hari ini. Ibu, bapa dan nenek kita adalah golongan yang sentiasa berbakti kepada masyarakat terutamanya kepada golongan ibu dan ayah. Mereka tidak harus malu untuk menjaga diri tetapi akan memberikan nilai moral kepada anak-anak sehingga mencetus liku-liku kehidupan kepada generasi yang akan datang. Sebagai rakyat yang menghargai golongan tua ini kita pasti akan menghargai jasa dan pengorbanan orang tua di negara kita. Oleh itu, kita hendaklahlah meluangkan masa untuk bersama-sama anak-anak. Peranan utama bagi meluangkan masa bersama anak-anak adalah dengan meluangkan masa bersama-sama anak-anak. Antara cara mereka meluangkan masa bersama sahabat ialah dengan meluangkan masa bersama rakan-rakan. Mereka yang mempunyai hasrat untuk menziarahi keluarga yang akan mereka lawati ialah mereka yang ingin meluangkan masa bersama-sama. Oleh itu, mereka perlu menghabiskan masa bersama sahabat-sahabat ini dan meluangkan masa bersama ahli keluarga. Bagi mereka yang masih kecil, tidak perlulah tinggal bersama-sama ahli keluarga. Oleh itu, untuk meluangkan masa bersama, ahli keluarga hendaklah turut'"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_ids = tokenizer.encode(points, return_tensors = 'pt')\n",
    "outputs = model.generate(input_ids,\n",
    "                        do_sample=True, \n",
    "    max_length=256, \n",
    "    top_k=50, \n",
    "    top_p=0.95, )\n",
    "t = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CommitInfo(commit_url='https://huggingface.co/mesolitica/finetune-isi-penting-generator-t5-small-standard-bahasa-cased/commit/f0079e027adc13a8bf3fc90310648f26de786956', commit_message='Upload T5ForConditionalGeneration', commit_description='', oid='f0079e027adc13a8bf3fc90310648f26de786956', pr_url=None, pr_revision=None, pr_num=None)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.push_to_hub('finetune-isi-penting-generator-t5-small-standard-bahasa-cased', organization='mesolitica')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CommitInfo(commit_url='https://huggingface.co/mesolitica/finetune-isi-penting-generator-t5-small-standard-bahasa-cased/commit/9d3422ab66f7a36380d9e0af4acca1f5af81bb96', commit_message='Upload tokenizer', commit_description='', oid='9d3422ab66f7a36380d9e0af4acca1f5af81bb96', pr_url=None, pr_revision=None, pr_num=None)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tokenizer.push_to_hub('finetune-isi-penting-generator-t5-small-standard-bahasa-cased', organization='mesolitica')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
